/**
 * Ajax异步提交工具类 注意：提交的服务器必须与当前使用页面同域名（跨域问题）。
 * 
 * @namespace gui.util
 * @singleton Ajax
 */
gui.util.Ajax = {
		/**
		 * 异步GET请求
		 * @param {String} url 服务器地址
		 * @param {String} params 参数
		 * @param {Function} successFun 成功后回调函数
		 */
		asyncGET:function(url, params, successFun, failureFun, beforeSend) {
			$.ajax({
				url:url,
				type:'get',
				cache:false,
				beforeSend:beforeSend,
				data:params,
				success:function(ret){
					gui.util.Exception._try(ret,successFun);
				},
				error:function(){
					if(failureFun){
						failureFun.call(window);
					}else{
						gui.util.Error._throw(gui.util.ErrorCode[10002]);
					}
				}
			})
		},
		
		/**
		 * 异步POST请求
		 * @param {String} url 服务器地址
		 * @param {String} params 参数
		 * @param {Function} successFun 成功后回调函数
		 */
		asyncPOST:function(url, params, successFun, failureFun) {
			$.ajax({
				url:url,
				type:'post',
				cache:false,
				data:params,
				success:function(ret){
					gui.util.Exception._try(ret,successFun);
				},
				error:function(){
					if(failureFun){
						failureFun.call(window);
					}else{
						gui.util.Error._throw(gui.util.ErrorCode[10002]);
					}
				}
			})
		},
		
		/**
		 * 同步GET请求
		 * @param {String} url 服务器地址
		 * @param {String} params 参数
		 * @param {Function} successFun 成功后回调函数
		 */
		syncGET:function(url, params) {
			var ret;
			$.ajax({
				url:url,
				async:false,
				type:'get',
				cache:false,
				data:params,
				success:function(data){
					gui.util.Exception._try(data,function(data){
						ret=data;
					});
				},
				error:function(){
					gui.util.Error._throw(gui.util.ErrorCode[10002]);
				}
			})
			return ret;
		},
		
		/**
		 * 同步POST请求
		 * @param {String} url 服务器地址
		 * @param {String} params 参数
		 * @param {Function} successFun 成功后回调函数
		 */
		syncPOST:function(url, params, successFun, failureFun) {
			var ret;
			$.ajax({
				url:url,
				async:false,
				cache:false,
				type:'post',
				data:params,
				success:function(data){
					gui.util.Exception._try(data,function(data){
						ret=data;
					});
				},
				error:function(){
					gui.util.Error._throw(gui.util.ErrorCode[10002]);
				}
			})
			return ret;
		}
}